//3.18写出下面程序的运行结果
#include <iostream>
using namespace std;
class test{
public:
test();
~test() {};
private:
int i;
};
test::test()
{
i=25;
for(int ctr=0;ctr<10;ctr++){
cout<<"Counting at "<<ctr<<"\n";
}
}
test anObject;
int main()
{
return 0;
}
运行结果
Counting at 0
Counting at 1
Counting at 2
Counting at 3
Counting at 4
Counting at 5
Counting at 6
Counting at 7
Counting at 8
Counting at 9
--------------------------------
Process exited after 0.6007 seconds with return value 0
请按任意键继续. . .
//【3.19】写出下面程序的运行结果
#include <iostream>
using namespace std;
class Test{
private:
int val;
public:
Test()//无参构造函数
{
cout<<"default."<<endl;
}
Test(int n)//一参构造函数
{
val=n;
cout<<"Con."<<endl;
}
Test(const Test& t)//拷贝构造函数
{
val=t.val;
cout<<"Copy con."<<endl;
}
};
int main()
{
Test t1(6);//调用一参构造函数
Test t2=t1;//调用拷贝构造函数
Test t3;//调用无参构造函数
t3=t1;//不调用任何函数
return 0;
}
运行结果
Con.
Copy con.
default.
--------------------------------
Process exited after 0.5733 seconds with return value 0
请按任意键继续. . .
//【3.20】指出下列程序中的错误,并说明原因
#include <iostream>
using namespace std;
class Student{
public:
void printStu();
private:
char name[10];
int age;
float aver;
};
int main()
{
Student p1,p2,p3;
p1.age=30; //错误!!私有数据成员不能直接被访问
return 0;
}
编译提示
[Error] 'int Student::age' is private within this context
//【3.21】指出下列程序中的错误,并说明原因
#include <iostream>
using namespace std;
class Student{
int sno;
int age;
void printStu();
void setSno(int d); //注意!!类中没有访问权限关键字的部分会被默认为 private!!
};
void printStu() //错误!!如果它是成员函数。正确语句应该是 void Student::printStu()。
{
cout<<"\nSno is "<<sno<<","; //错误!!如果是一般函数,则要定义出 sno,age 这两个变量
cout<<"age is "<<age<<"."<<endl; //编译提示:[Error] 'sno' ,'age'was not declared in this scope
}
void setSno(int s) //错误!!如果它是成员函数。正确语句应该是 void Student::setSno()。
{
sno=s; //错误!!如果是一般函数,则要定义 sno 个变量
} //编译提示:[Error] 'sno' was not declared in this scope
void setAge(int A. //错误!!基本语法错误,懂的都懂!
{
age=a; //错误!!setAge此时是一般函数,变量age不属于Student类。变量age应该重新定义
//编译提示:[Error] 'age' was not declared in this scope
}
int main()
{
Student lin;
lin.setSno(20021); //错误!!不能访问私有成员 编译提示:[Error] 'void Student::setSno(int)' is private within this context
lin.setAge(20); //错误!!setAge()不是成员函数 编译提示: [Error] 'class Student' has no member named 'setAge'
lin.printStu; //错误!!不能访问私有成员
//语法错误!!调用这个函数的正确语句是 lin.printStu();
}
//【3.21】指出下列程序中的错误,并说明原因
#include <iostream>
using namespace std;
class Point{
public:
int x,y;
private:
Point()
{
x=1;y=2;
}
};
int main()
{
Point cpoint; //此处错误!!只有一条编译提示:
cpoint.x=2; //[Error] 'Point::Point()' is private within this context
return 0; //意思应该是在创建cpoint这个对象时,有构造函数,则要调用构造函数
//而此时的构造函数是private,是私有成员,所以又不能访问,所以应该
//没人会把构造函数搞成private吧,那这样就失去了构造函数的意义。
}
改法:将自定义的构造函数去掉即可,用默认的构造函数
? ? ? ? ? ?或者定义为public
//【3.23】下面是一个计算器类的定义,请完成该类成员函数的实现
class counter{
public:
counter(int number);
void increment(); //给原值加1
void decrement(); //给原值减1
int getvalue(); //取得计数器值
int print(); //显示计数
private:
int value;
};
代码实现
//【3.23】下面是一个计算器类的定义,请完成该类成员函数的实现
#include <iostream>
using namespace std;
class counter{
public:
counter(int number);
void increment(); //给原值加1
void decrement(); //给原值减1
int getvalue(); //取得计数器值
int print(); //显示计数
private:
int value;
};
counter::counter(int number) { value=number; }
void counter::increment() { value++; }
void counter::decrement() { value--; }
int counter::getvalue() { return value; }
int counter::print() { cout<<this->getvalue()<<endl; return 0; }
int main()
{
counter c(10);
c.increment();
c.decrement();
c.print();
}
//【3.24】根据注释语句的提示,实现类Date的成员函数。
#include <iostream>
using namespace std;
class Date{
public:
void printDate();//显示日期
void setDay(int d);//设置日的值
void setMonth(int m);//设置月的值
void setYear(int y);//设置年的值
private:
int day,month,year;
};
int main()
{
Date testDay;
testDay.setDay(5);
testDay.setMonth(10);
testDay.setYear(2003);
testDay.printDate();
return 0;
}
代码实现
//【3.24】根据注释语句的提示,实现类Date的成员函数。
#include <iostream>
using namespace std;
class Date{
public:
void printDate();//显示日期
void setDay(int d);//设置日的值
void setMonth(int m);//设置月的值
void setYear(int y);//设置年的值
private:
int day,month,year;
};
void Date::setDay(int d) { day=d; }
void Date::setMonth(int m) { month=m; }
void Date::setYear(int y) { year=y; }
void Date::printDate() { cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl; }
int main()
{
Date testDay;
testDay.setDay(5);
testDay.setMonth(10);
testDay.setYear(2003);
testDay.printDate();
return 0;
}
输出样例
2003年10月5日
--------------------------------
Process exited after 0.5859 seconds with return value 0
请按任意键继续. . .
题目:建立类 cylinder,类 cylinder 的构造函数被传递了两个 double 值,分别表示圆柱体的半径和高度。用类 cylinder 计算圆柱体的体积,并存储在一个 double 变量中。在类 cylinder 中包含一个成员函数 vol0,用来显示每个 cylinder 对象的体积。
代码实现
#include <iostream>
#define PI 3.14159
using namespace std;
class cylinder{
public:
cylinder(double,double);
void volo();
private:
double r,h,v;
};
cylinder::cylinder(double r1,double h1)
{
r=r1;
h=h1;
}
void cylinder::volo()
{
v=PI*r*r*h;
cout<<v<<endl;
}
int main()
{
cylinder cy1(2,3);
cy1.volo();
return 0;
}
输出样例
37.6991
--------------------------------
Process exited after 0.4074 seconds with return value 0
请按任意键继续. . .
题目:构建一个类 Stock,含字符串 stockcode 及整型数据成员 quantity、双精度型数据成员price。构造函数含 3 个参数,当定义 Stock 的类对象时,将对象的第 1个字符串参数赋给数据成员stockcode,第2和第3 个参数分别赋给 quantity 和 price。未设置第2和第3 个参数时,quantity的值为1000、price 的值为 8.98。成员函数 print0没有形参,需使用 this 指针,显示对象数据成员的内容。假设类 Stock 第 1个对象的 3 个参数分别为"600001"、3 000和5.67;第2个对象的第1个数据成员的值是"600001",第 2 和第 3个数据成员的值取默认值。编写程序分别显示这两个对象数据成员的值。
代码实现?
?
#include <iostream>
#include <stdlib.h>
using namespace std;
class Stock{
public:
Stock(string stockcode1,int quantity1=1000,double price1=8.98)
{
stockcode=stockcode1;
quantity=quantity1;
price=price1;
}
void print()
{
cout<<this->stockcode<<" "<<this->quantity<<" "<<this->price<<endl;
}
private:
string stockcode;
int quantity;
double price;
};
int main()
{
Stock stock1("600001",3000,5.67);
Stock stock2("600001");
stock1.print();
stock2.print();
}
?
输出样例
600001 3000 5.67
600001 1000 8.98
--------------------------------
Process exited after 0.3581 seconds with return value 0
请按任意键继续. . .