/*******************************************************************************
* 版权所有:
* 模 块 名:
* 文 件 名:class_default_constructor_for_const_member.cpp
* 实现功能:
* 作 者:XYZ
* 版 本:V1.0
* 日 期:2013.08.12
* 其他说明:xiao13149920@foxmail.com
********************************************************************************/
// class_default_constructor_for_const_member.cpp
#include<iostream>
#include<cstdlib>
#include<cstring>
using namespace std; //#define INIT class CBase
{
private:
#ifdef INIT
const int m_const_i;
#endif
static int m_static_i;
const static int m_const_static_i /*= 100*/; public:
void print();
}; int CBase::m_static_i = ;
const int CBase::m_const_static_i = ; void CBase::print()
{
#ifdef INIT
cout<<"ci="<<ci<<endl;
#endif
cout<<"m_static_i="<<m_static_i<<endl;
cout<<"m_const_static_i="<<m_const_static_i<<endl;
} class B
{
private:
#ifdef INIT
CBase& cb;
#endif
}; int main()
{
// test for default constructor
CBase cb;
cb.print();
B b; // test for const char * p = str._cstr();
string str = "hello world";
const char * p = str.c_str();
str[]='H';
str.append("-----------------\n");
char parr[];
memset(parr, , sizeof(parr));
strcpy(parr, p);
cout<<"p="<<p<<endl;
cout<<"str="<<str<<endl;
cout<<"parr="<<parr<<endl; return ;
}

1. 编译器会为每个类自动生成一个缺省的构造函数,拷贝构造,赋值函数. 但有const 数据成员(无static组合的), 引用数据成员是一个例外.即代码中的55,57行.

2. 不可把string.c_str()的内容赋值给const char* p, 即代码中的61行

3. const static 数据成员也可以在类中初始化. 如行26.

4. 新增若是基类的拷贝构造或者复制函数为私有函数, 那么编译器也不会为派生类生成一个缺省拷贝构造和赋值函数

构造函数,const char*与c_str的更多相关文章

  1. string、const char*、 char* 、char[]相互转换

    转化总结如下: 目标格式 源格式 string const char* char* char[] string NULL const char*=string.c_str(); const char* ...

  2. VS2017中遇到不存在从string到const char*的转换函数的解决方法

    使用c_str()函数 c_str函数的返回值是const char*. c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有stri ...

  3. c++ const char *c_str(); 坑的学习

    语法: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同. 这是为了与c语言兼容,在c语言中没有string类型,故必须通过st ...

  4. QStringLiteral(源代码里有一个通过构造函数产生的从const char*到QString的隐式转换,QStringLiteral字符串可以放在代码的任何地方,编译期直接生成utf16字符串,速度很快,体积变大)

    原作者: Olivier Goffart 点击打开链接http://woboq.com/blog/qstringliteral.html 译者: zzjin 点击打开链接http://www.tuic ...

  5. 实战c++中的string系列--string与char*、const char *的转换(data() or c_str())

    在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数 ...

  6. 【C++】int、const char*、char*、char、string之间的转换

    #include "stdafx.h" #include<string> #include<vector> #include<iostream> ...

  7. string,const char*,char*之间的相互转换

    1. string转const char* string s = "abc"; const char* c_s = s.c_str(); 2. const char*转string ...

  8. C++ char*,const char*,string的相互转换

    1. string转const char* string s ="abc";constchar* c_s = s.c_str(); 2. const char*转string   ...

  9. const char* <----- > string

    (1) const char*      <-----     string const char* const_txt_path=txt_path.c_str(); (2)  string  ...

随机推荐

  1. Node聊天程序实例03:chat.js

    作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. chat.j ...

  2. SublimeText配置NodeJS代码提示

    IDE选择 最近开始研究node.js.在网上资料显示使用WebStorm开发好像是最理想的选择,但由于其需要收费.笔者选择使用Sublime Text开发.至于破解方法网络有一大堆资料,笔者此处就略 ...

  3. strcpy strlen memcpy等的函数实现

    #include <assert.h> #include <string.h> #include <stdlib.h> #include <stdio.h&g ...

  4. linux网卡混杂模式

    混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址.普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃.一般来说,混杂模式不会影响网卡的正常工作 ...

  5. SAP采购订单历史明细报表源代码(自己收藏)

    SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF } ...

  6. SQL表关联赋值、系统表、表数据删除

    1. 表与表的关联赋值(用于表与表之间有关联字段,数据互传) 双表关联赋值 UPDATE #B SET #B.D=#A.B from #B inner join #A on #B.C=#A.A 多表关 ...

  7. C# 6.0 Feature list

    Feature Example C# VB Auto-property initializers public int X { get; set; } = x; Added Exists Getter ...

  8. 05-String动手动脑问题及课后实验性问题总结

    一.请运行以下实例代码StringPool.java,查看其输出结果.如何解释这样的输出结果?从中你能总结出什么? (1)在Java中,内容相同的字符常量("Hello")只保存一 ...

  9. loadrunner获取当前CST时间

    第一种方法:使用LR的参数化功能. 代码如下,nowtime是保存当前CST时间的字符串变量,local_time是要参数化的变量. Action() { char *nowtime; nowtime ...

  10. OpenBSD内核之引导PBR

    OpenBSD引导的第二部PBR,也是活动分区的一个扇区的代码,由第一步的MBR加载到0x7C00处,manpage里详细的讲解了过程和大致实现 biosboot(8) (http://man.ope ...