C++ 类

一.基础
1.标准C++定义了一些内建的类,如string
2.成员选择符: .或->
3.如果成员函数在的定义在类声明之中,则这种方式为inline
  通过在进行成员函数声明的时候使用inline,可将原本定义在类声明之外的成员函数强制变成内联函数。
4.通常将一个类的声明放在头文件中,这样在任何要使用这个类的地方通过#include宏便可将这个类的声明包含进来。
5.效率和健壮性:
  一般,类都是作为引用方式进行传递的.
6.C& g(){static C c3; c3.set(123); return c3;}
7.const
   const类型参数可防止对参数的误写。
   const类型函数:不能直接或间接改变该函数所属对象的任何成员数据。
 const只能调用const函数
8.对成员函数进行重载以便处理两种类型的字符串。

二.构造函数与析构函数
 它们在调用时不需要显式地提供函数名.
 Persion ps("hanyin");
1.利用构造函数约束对象的创建
 a.把默认构造函数设为私有的;b.声明有参数的构造函数
2.拷贝构造函数
 copy constructor可以有多个参数,但是第一个以后的都必须有默认值。
 如果设计者不提供,编译会自动生成一个:并且,它会将源对象的所有数据成员赋给目标对象的相应数据成员。
 故:当一个类包含指向动态存储区指针成员时,要为其设计拷贝构造函数。
 Person(Person &p){/***/}
 或Person(const Person& p){}
3.禁止通过传值方式传递和返回类对象。
 如果构造函数是私有的,则可做到这点。
4.转型构造函数
 若:
 void f(Person p);//declaration
 如果以string 来调用f:
 string s="Turandot";
 f(s); //string ,not Person
 只要:Person有这样的一个转型构造函数,Person(string s){},则编译器会自动调用:
 --->f(Person(s));
 !!--->隐式类型转换....
 可在在构造函数前加止explicit来阻止这种隐式的转换
 
5.构造函数初始化程序:初始化const类数据的惟一方法!!
 class Person{
  public Person():c(10){/****/}
 private:
  const int c;  
 }
6.建议对每个带有数据成员的类设计一个默认构造函数,如果需要释放资源,也应有析构函数。
三.类数据成员和类成员函数
 类数据成员:static int n;
  在外部使用时:className::n=10;
  在程序块之外定义的任何变量都将自动地初始化为0
 类成员函数:static函数只能访问static函数和static成员数据
  另外,static可是inline或非inline
四.在成员函数内定义static变量
 如果如此,则该类所有对象在调用这个成员函数时将共享这个变量。
五.指向对象的指针
 this: this为实例化的对象,它只是一个常量,不可作为左值
 void File::copy(File& dest){if(this==&dest){return ;}}
 
六。引用实际上就是取址:因为它们的地址是相同的..
 如 string s1="GOD"; string& s2=s1;
 if(&s1==&s2){cout<<"s1==s2 is true!"<<endl; 
 
七。常见错误
1.类的声明少了分号
2.给const成员赋值,即使在构造函数中也不可以.
3.C(C obj){}...错误...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值