【C++/类与对象总结】
1.以上是对本章知识的大致梳理,下面通过我自己在编程中遇到的问题再次总结。
- 私有成员必须通过get()函数访问吗?能不能直接调用?
- 私有成员必须通过公共函数接口去访问,比如设置set()修改成员内容,利用get()取值。
- 另外还可以利用友元访问#include<iostream>
using namespace std;
class B;
class A
{
friend B;
public:
A(){}
~A(){}
private:
void print(){cout << "It's in A class" << endl;}
};
class B
{
public:
B(){}
~B(){}
void test(){a.print();}//A的私有成员函数直接调用
private:
A a;
};
int main()
{
B b;
b.test();
system("pause");
return 0;
}
- 构造函数()要不要写出参数?
- 在类中构造函数必须要有形参,可以给定默认值参数,也可以不给。对象初始化可以通过对象.(参数),也可以通过对象.set()修改默认值。
- 使用内联示例:
1 #include<iostream> 2 using namespace std; 3 class Dog{ 4 public: 5 Dog(int initage=0,int initweight=0); 6 ~Dog(); 7 int GetAge(){ 8 return age; 9 }//内联隐式函数 10 void setage(int ages){ 11 age=ages; 12 } 13 int getweight(){ 14 return weight; 15 } 16 void setweight(int weights){ 17 weight=weights; 18 } 19 20 private: 21 int age;int weight; 22 }; 23 Dog::Dog(int initage,int initweight){ 24 age=initage; 25 weight=initweight; 26 } 27 Dog::~Dog(){ 28 } 29 int main(){ 30 Dog a; 31 cout<<a.getweight(); 32 return 0; 33 }
4.结构体和共同体:定义一个"数据类型" datatype类,能处理包含字符型、整型、浮点型三种类型的数据,给出其构造函数。
1 #include <iostream> 2 using namespace std; 3 class datatype{ 4 enum{ character, integer, floating_point } vartype; 5 union { char c; int i; float f; }; 6 public: datatype(char ch) 7 { vartype = character; c = ch; } 8 datatype(int ii) { 9 vartype = integer; i = ii; } 10 datatype(float ff) { 11 vartype = floating_point; f = ff; } 12 void print(); }; 13 void datatype::print() { switch (vartype) { case character: 14 cout << "字符型: " << c << endl; break; 15 case integer: 16 cout << "整型: " << i << endl; break; 17 case floating_point: 18 cout << "浮点型: " << f << endl; break; } } 19 void main() { 20 datatype A('c'), B(12), C(1.44F); 21 A.print(); 22 B.print(); 23 C.print(); 24 }