代码改变世界

c++ string c_str() 和data()区别

2012-06-12 21:44 by youxin, 8371 阅读, 0 推荐, 收藏,
摘要:看下面的英文解释:const char* c_str ( ) const;Get C string equivalentGenerates a null-terminated sequence of characters (c-string) with the same content as the string object and returns it as a pointer to an array of characters.A terminating null character is automatically appended.const char* data() const;. 阅读全文

转:C++ 数组引用

2012-06-12 21:40 by youxin, 939 阅读, 0 推荐, 收藏,
摘要:如下定义就得到一个数组的引用 类型名 (&变量明)[N]; 实例 int int_array[10]; int (&int_ref)[10] = int_array; 这样就得到了一个数组的应用 在函数的声明中用数组的引用定义,就不怕数组退化了。如下 for_each( int (&int_ref)[10] ) { for( int i=0; i#includetypedef char Char10[10];void func(Char10 &a)//char (&a)[10]){ printf("%d\n",sizeof(a)); 阅读全文

C++函数默认参数

2012-06-12 21:35 by youxin, 293 阅读, 0 推荐, 收藏,
摘要:在定义参数的时候同时给它一个初始值。void Func(int i = 1, float f = 2.0f, double d = 3.0){ cout << i << ", " << f << ", " << d << endl ;}int main(void){ Func() ; // 1, 2, 3 Func(10) ; // 10, 2, 3 Func(10, 20.0f) ; // 10, 20, 3 Func(10, 20.0f, 30.0) ; // 10, 20, 3 阅读全文

c++ 复制+赋值+析构

2012-06-08 21:51 by youxin, 439 阅读, 0 推荐, 收藏,
摘要:对于需要管理资源(譬如内存)的类,一般均需要自行定义复制、赋值、析构函数,以确保正确、合理的语义和对资源的妥善管理。T::T(); //one or more constructors, perhaps with arguments T::~T() // the destructor T::T(const T&) // the copy constructor T::operator=(const T&) // the assignment operator构造函数、析构函数与赋值函数是每个类最基本的函数。每个类只有一个析构函数,但可以有多个构造函数(包含一个拷贝构造函数,其它 阅读全文

c++ 赋值和初始化详解

2012-06-08 21:42 by youxin, 1223 阅读, 0 推荐, 收藏,
摘要:赋值 vs. 初始化 赋值将重写一个已存在对象的值,调用operator =; 初始化将创建一个新对象,同时为此新对象提供初始值,调用复制构造函数。这两句话很经典,记住后就明白赋值和初始化的差别了。 赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情 况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。如果类中没有拷贝构造函数,则编译器会提供一个默认的。这个默认的拷贝构造函数只是 简单地复制类中的每个成员。c++中初始化和赋值操作差别是很大的。对于基本数据类型差别不大:比如:inta=12;//ini.. 阅读全文

编写Vec类

2012-06-08 21:15 by youxin, 492 阅读, 0 推荐, 收藏,
摘要:上面的解释了为什么两个函数仅仅返回值不同为什么还能重载。对象的复制隐式地复制double d;vector<int> vi;d = median(vi); // copy vi into the parameter in median string line;vector<string> words = split(line); // copy the return value from split into words 显式的复制vector<Student_info> vs;vector<Student_info> v2 = vs; // c 阅读全文

c++ 操作符重载

2012-06-08 21:02 by youxin, 986 阅读, 0 推荐, 收藏,
摘要:操作符函数的名字: operator 后跟着操作符的符号(其间可以有空格)操作符函数的参数的个数: 如果操作符函数是非成员函数,参数个数就是操作数的个数;对于二元操作符,第一个参数为左操作数,第二个参数为右操作数。如果操作符函数为成员函数,参数个数比操作数个数少1;因为调用此操作符函数的对象默认... 阅读全文

Bill Gates 名言

2012-06-08 20:27 by youxin, 873 阅读, 0 推荐, 收藏,
摘要:In Bill Gates' Book for high school and college graduates, there is a list of 11 things they did not learn in school. In his book, Bill Gates talks about how feelgood, politically-correct teachings created a full generation of kids with no concept of reality and how this education set them up fo 阅读全文

c++3种内存管理方式

2012-06-08 20:08 by youxin, 282 阅读, 0 推荐, 收藏,
摘要:自动内存管理: 系统在运行时遇到局部变量的定义则为此变量分配内存空间,在退出包含此变量定义的语句块时释放对应于此变量的内存空间。注意:严禁使用指向被销毁对象的指针,同理,也不可使用被销毁对象的引用。静态内存分配: 静态对象被分配且仅被分配一次内存空间,并且此对象的生存期与程序的运行期相同。动态内存分配: 自行掌控对象的生成和销毁T* ptr = new T;为T类型的对象分配内存,并进行默认初始化,生成指向此无名对象的指针。new T(initializer); //使用initilizer初始化新生成的对象此对象会一直存在,直至程序结束(内存泄露!)或被主动销毁 delete ptr;例:i 阅读全文

c++内联函数

2012-06-08 19:57 by youxin, 1203 阅读, 0 推荐, 收藏,
摘要:内联函数定义 内联函数使用inline关键字定义, 并且函数体和申明必须结合在一起, 否则编译器将他作为普通函数对待。inline void function(int x); //仅仅是申明函数,没有任何效果inline void function(int x) //正确 { return ++x; }在类内部定义的函数自动的为内联函数, 不需要加关键字inline。class point { int i; public: void SetValue(int x) //内联函数 { i = x; ... 阅读全文
上一页 1 ··· 230 231 232 233 234 235 236 237 238 ··· 269 下一页